مشخصات مقاله
-
2770
-
0.0
-
4281
-
0
-
0
آموزش ذخیره سازی جفت کلید-مقدار (قسمت دوم)
دوره آموزش برنامه نویسی اندروید
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
آموزش ذخیره سازی جفت کلید-مقدار قسمت دوم
تست و اجرا برنامه اندروید
برنامه را راه اندازی کرده و درایه ی Settings را از action bar انتخاب کنید. اکنون باید بتوانید یک URL در این قسمت وارد کنید. حال در صورت زدن دکمه ی بازگشت و دکمه ی تجدید، مقدار url preference باید در activity مربوط مورد استفاده قرار گرفته شود.
تمرین بیشتر : نمایش مقدار جاری در settings
تکه کد زیر نحوه ی نمایش مقدار جاری را در صفحه ی preference نمایش می دهد.
package com.example.android.rssfeed;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
public class SettingsActivity extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.mypreferences);
// show the current value in the settings screen
for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) {
initSummary(getPreferenceScreen().getPreference(i));
}
}
@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences،
String key) {
updatePreferences(findPreference(key));
}
private void initSummary(Preference p) {
if (p instanceof PreferenceCategory) {
PreferenceCategory cat = (PreferenceCategory) p;
for (int i = 0; i < cat.getPreferenceCount(); i++) {
initSummary(cat.getPreference(i));
}
} else {
updatePreferences(p);
}
}
private void updatePreferences(Preference p) {
if (p instanceof EditTextPreference) {
EditTextPreference editTextPref = (EditTextPreference) p;
p.setSummary(editTextPref.getText());
}
}
}
6. رابط برنامه سازی کاربردی فایل اندروید
استفاده از رابط برنامه سازی کاربردی (API) فایل
دسترسی به سیستم فایل از طریق کلاس های استاندارد java.io صورت می پذیرد.
اندروید همچنین کلاس های کمک رسانی (helper class) متعددی جهت ایجاد و دسترسی به فایل ها و پوشه ها جدید عرضه می کند، به عنوان مثال می توان به متد getDir(String، int)اشاره کرد که یک پوشه جدید ایجاد کرده و دسترسی به آن را امکان پذیر می کند یا متد openFileInput(String s) یک فایل ویژه ی ورودی (input) باز می کند و یا متد openFileOutput(String s، Context.MODE_PRIVATE) که یک فایل جدید ایجاد می کند.
اگرچه اندروید از فایل های world readable/writable پشتیبانی می کند، اما توصیه می شود که فایل های یک برنامه ی کاربردی را مخصوص خود آن اپلیکیشن خصوصی نگه داریم و در صورت نیاز به تبادل یا به اشتراک گذاری داده با دیگر اپلیکیشن ها از Content Provider کمک بگیریم.
مثال زیر استفاده از API را به نمایش می گذارد.
public class Util {
public static void writeConfiguration(Context ctx) {
BufferedWriter writer = null;
try {
FileOutputStream openFileOutput = ctx.openFileOutput("config.txt"، Context.MODE_PRIVATE);
openFileOutput.write("This is a test1.".getBytes());
openFileOutput.write("This is a test2.".getBytes());
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
public void readFileFromInternalStorage(String fileName) {
String eol = System.getProperty("line.separator");
BufferedReader input = null;
try {
input = new BufferedReader(new InputStreamReader(openFileInput(fileName)));
String line;
StringBuffer buffer = new StringBuffer();
while ((line = input.readLine()) != null) {
buffer.append(line + eol);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
حافظه ی خارجی
اندروید قابلیت دسترسی و استفاده از حافظه ی خارجی را نیز پشتیبانی می کند، به طور مثال SD card. کلیه ی فایل ها و پوشه های موجود در سیستم حافظه ی خارجی برای تمامی اپلیکیشن های نصب شده روی دستگاه اندروید البته با مجوز لازم امکان پذیر می باشد.
برای اینکه برنامه بتواند اطلاعات را از حافظه ی خارجی بخواند نیاز به مجوز android.permission.READ_EXTERNAL_STORAGE دارد، در حالی که به منظور نوشتن اطلاعات در حافظه ی خارجی، برنامه ی کاربردی مجوز android.permission.WRITE_EXTERNAL_STORAGE را نیاز دارد. با فراخوانی متد Environment.getExternalStorageDirectory() نیز می توان به مسیر سیستم حافظه ی خارجی دست پیدا کرد.
به واسطه ی صدا زنی متد ذیل، برنامه نویس قادر خواهد بود وضعیت کنونی سیستم حافظه ی خارجی را بررسی کند. چنانچه دستگاه اندروید به وسیله ی USB به رایانه متصل باشد، دیگر SD Card ای که برای سیستم حافظه ی خارجی مورد استفاده قرار می گیرد در دسترس نخواهد بود.
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
مثال زیر فرایند خواندن از حافظه ی خارجی را نمایش می دهد.
private void readFileFromSDCard() {
File directory = Environment.getExternalStorageDirectory();
// assumes that a file article.rss is available on the SD card
File file = new File(directory + "/article.rss");
if (!file.exists()) {
throw new RuntimeException("File not found");
}
Log.e("Testing"، "Starting to read");
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
StringBuilder builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
